define(function(require,exports,module) {
    var myPub = require('./public');
    var oWrap = $('.js_wrap');
    var oErrPage = $('.js_errPage');

    var oApplayList = $('.js_applayList');

    var lazLoading = new myPub.lazLoadingImg();

    var oEstimateOpen = $('.js_estimateOpen');      // 评价点击区域设置
    var oEstimateStars = $('.js_estimateStars');	// 评价星星区域
    var oLayerMessage = $('.js_layer_message');     // 留言信息
    var oSubmitBtn = $('.js_submitBtn');            // 留言提交
    var oLayer_estimate = $('.js_layer_estimate');  // 评价弹框
    var oCloseEstimateBtn = $('.js_closeEstimateBtn'); // 评价关闭按钮

    var maxNum = 4;             // 星星数量控制
    var btnOff = true;          // 组织多次点击操作
    var postData = {};          // 提交评价信息数据

    var oShadow = $('.js_shadow');
    var oLoadingBtn = $('.js_loadingBtn');
    var oMoreBtnBox = $('.js_moreBtnBox');
    var oSideBox = $('.js_sideBox');		        // 侧边按钮框

    var httpImageUrl = myPub.httpImageUrl;
    var layerStyle = 'background-color:rgba(255,255,255,1); color:#252525; border:none; border-radius: 5px; min-width:50%'
    var oWindow = $(window);
    var oPraiseItem = $('.js_Praise');             //售后评价选项
    var oStarsText = $('.js_startFonts');          // 星星等级
    var starsText = ['非常不满意','不满意','一般','满意','非常满意'];         // 星星等级内容


    module.exports = {
        init: function () {
            ajaxData.postInfo(function () {
                ajaxData.ScrollPage();
                oMoreBtnBox.show();
            });
            // 设置 弹框高度
            // oLayer_estimate.css({
            //     'height': oWindow.height() * 0.55
            // })
        }
    }


    var ajaxData = {
        start: 0,
        limit: 5,
        pagearr: 0,
        supplierId: 0,
        workOrderId: 0,
        url_comment: '/m/o/afterSale/comment/1.0/save',
        url_list: '/myInfo/getApplayList',
        time_Scroll: null,
        loadDateOff: true,
        postInfo: function(suFn) {
            var _this = this;
            if(!_this.loadDateOff) return;

            _this.start = _this.limit * _this.pagearr;
            G_JSON_POST(_this.url_list, {
                start: _this.start,
                limit: _this.limit
            }, function (data) {
                if( !data  ) {
                    oWrap.hide();
                    oErrPage.show();
                    return;
                }
                if (data.noWorkOder == 'noWorkOder') {

                    if(_this.start == 0) {
                        oWrap.hide();
                        oErrPage.show();
                        return;
                    }
                    else {
                        oLoadingBtn.hide().eq(0).show();
                        _this.loadDateOff = false;
                        return;
                    }
                }

                if(data.applyWorkOrders.length > 0) {
                    var _dataOrders = data.applyWorkOrders;
                    var _html = '';
                    for(var i=0; i<_dataOrders.length; i++) {
                        _html += _this.htmlSplice(_dataOrders[i]);
                    }

                    oApplayList.append(_html);
                    lazLoading.DestroyLazLoadingImg();
                    lazLoading.AddLazLoadingImg(oWrap[0]);

                    if(data.applyWorkOrders.length >= _this.limit ) {
                        _this.pagearr++;
                        oLoadingBtn.hide().eq(1).show();
                    }
                    else {
                        _this.loadDateOff = false;
                        oLoadingBtn.hide().eq(0).show();
                    }

                    // 页面高度不够自动在加载一次
                    if( oApplayList.outerHeight(true) <= oWrap.height() ) {
                        _this.postInfo()
                    }
                }
                else {
                    oLoadingBtn.hide().eq(0).show();
                }
                if(suFn)suFn(data);
            }, function () {
                // start
            }, function () {
                // end
            });

        },

        submitForm: function(datas, fn) {
            G_JSON_POST(ajaxData.url_comment, datas, function (data) {
                if(data.ret.code == 0){
                    myPub.TipLayerEnd('提交成功！', 'no', function () {
                        location.reload();
                    });
                }else{
                    myPub.TipLayer(data.ret.message);
                }
                if(fn)fn()
            }, function () {
                // start
            }, function () {
                // end
            })
        },


        // 显示评价框
        showEstimate: function() {
            oShadow.show();
            oLayer_estimate.show();
        },

        // 隐藏评价框
        HideEstimate: function() {
            var _this = this;
            oShadow.hide();
            oLayer_estimate.hide();
            _this.initEstimate();
        },

        // 初始化评价框
        initEstimate: function () {
            oEstimateStars.find('li').addClass('active');
            oPraiseItem.hide().removeClass('isActive');
            oPraiseItem.eq(2).show().addClass('isActive');
            oPraiseItem.find('button').removeClass('btnActive');
            oStarsText.html(starsText[4]);
        },

        // 单个订单
        htmlSplice: function (data) {
            var _this = this;
            var _html = '';
            _html +=
                '<section class="orderListBox transactionSuc ">' +
                    _this.htmlOrderId(data) +
                    _this.htmlGoodsInfo(data) +
                    _this.htmlUserBtn(data) +
                '</section>';
            return _html;
        },

        // 订单编号
        htmlOrderId: function (data) {
            var _this = this;
            var _html = '';
            var _time = myPub.FormatDateTime( new Date(data.createDate) );
            var _text = _this.orderStatus(data.workOrderStatus);
            _html +=
                '<section class="OrderListHead HBox BoxCenter ">' +
                '   <div class="storeOwner Bflex1 HBox ">' +
                '       <div class="storeName Bflex1">' +
                '           <span>订单编号：'+ data.orderSn +'</span>' +
                '           <span>申请时间：'+ _time +'</span>' +
                '       </div>' +
                '       <div>' +
                '          <span class="order_state">'+ _text +'</span>' +
                '       </div>' +
                '   </div>' +
                '</section>';
            return _html;
        },

        // 商品信息
        htmlGoodsInfo: function (data) {
            var _html = '';
            var orderItem = data.orderItem;
            _html +=
                '<section class="goods_showOne">' +
                    '<div class="goods_showChangeBox orderProduction">' +
                    '    <ul class="goodsList">' +
                    '        <li >' +
                    '            <a class="BoxSelf" href="/shop/workOrder/showDetail/'+ data.workOrderId +'?oId='+ orderItem.orderId +'">' +
                    '                <figure>' +
                    '                    <img class="js_lazyImg" data-echo="'+ httpImageUrl + orderItem.goodsImage + smallImgArg200 + '" ' +
                'src="/static_v4/image/loadImg.jpg">' +
                    '                </figure>' +
                    '                <aside class="priceArea VBox Bflex1">' +
                    '                    <div class="Bflex1 priceArea_name">' +
                    '                        <h4>'+ orderItem.goodsName +'</h4>' +
                    '                        <p class="smallFont_tip"><span>规格：</span>'+ orderItem.productName +'</p>' +
                    '                    </div>' +
                    '                    <div class="priceArea_price HBox ">' +
                    '                        <p class="priceAreaBox Bflex1">' +
                    '                            <span class="goodsPriceOld">￥'+ orderItem.productPrice +'</span>' +
                    '                        </p>' +
                    '                        <p class="selProNum"><span>×</span><span class="proNumber">'+ orderItem.quantity +'</span></p>' +
                    '                    </div>' +
                    '                </aside>' +
                    '                <em class="iconStyle icon-chevron-right"></em>' +
                    '            </a>' +
                    '        </li>' +
                    '    </ul>' +
                    '</div>' +
                '</section>';
            return _html;
        },

        // 底部按钮
        htmlUserBtn: function (data) {
            var _html = '';
            var _htmlEstimateBtn = '';

            if( data.appraise ) {
                _htmlEstimateBtn = '<button type="button" class="redBtn estimateOpen" ' + 'workOrderId= '+ data.workOrderId + ' ' + ' supplierId= '+ data.supplierId + '>售后评价</button>';
            }

            _html +=
                '<section class="orderBtnBox">' +
                '    <section class="transacSuccBtn orderAllBtn HBox" >' +
                '        <div class="Bflex1"></div>' +
                            _htmlEstimateBtn +
                '           <a href="/shop/workOrder/showDetail/'+ data.workOrderId +'?oId='+ data.orderItem.orderId +'">' +
                '               <button type="button">查看详情</button>' +
                '           </a>' +
                '    </section>' +
                '</section>';

            return _html;
        },

        // 订单状态
        orderStatus: function (data) {
            var _text = '';
            switch (data) {
                case 'AFTER_SALES_AUDIT':
                    _text = '售后审核中';
                    break;
                case 'SELLER_HANDLED':
                    _text = '商家已处理';
                    break;
                case 'SELLER_AGREED_REFUND':
                    _text = '商家同意退款';
                    break;
                case 'USER_REVOKE':
                    _text = '用户主动撤销';
                    break;
                case 'APPEAL_AUDIT':
                    _text = '申诉审核中';
                    break;
                case 'REFUND_SUCCESS':
                    _text = '退款成功';
                    break;
                case 'AFTER_SALES_CLOSURE':
                    _text = '售后关闭';
                    break;
                case 'PLATFORM_HANDLED':
                    _text = '平台介入';
                    break;
                case 'WAIT_USER_CONFIRM':
                    _text = '待用户确认';
                    break;
                default:
                    break;

            }
            return _text;
        },

        // 滚动加载
        ScrollPage: function () {
            var _this = this;
            var minScrHeight = 100;

            oWrap.on('scroll', function () {
                var afterScroll = $(this).scrollTop();
                _this.ShowGoTop(afterScroll);
                // 滚动页面距离底部300像素 延迟150毫秒加载数据
                clearTimeout(_this.time_Scroll);
                _this.time_Scroll = setTimeout(function() {
                    if(oWrap[0].scrollHeight - afterScroll - oWrap.height() < minScrHeight) {
                        ajaxData.postInfo();
                    }
                }, 500);
            })
        },

        ShowGoTop: function (scrollTop) {
            scrollTop > 300 ? oSideBox.stop().animate({'right':0},300) : oSideBox.stop().animate({'right': '-3.5rem'},300);
        }
    }


    // 打开
    oEstimateOpen.on('click', function (e) {
        var _tag = e.target;
        var $target;
        if(_tag.nodeName.toLowerCase() == 'button') {
            $target = $(_tag);
            // 判断是否 评价
            if( $target.attr('workOrderId') && $target.attr('workOrderId') ) {
                ajaxData.workOrderId = $target.attr('workOrderId');
                ajaxData.supplierId = $target.attr('supplierId');
                ajaxData.showEstimate();
            }
        }
    });

    // 关闭
    oCloseEstimateBtn.on('click', function () {
        ajaxData.HideEstimate();


        // myPub.askLayer('如果关闭评价窗口，之前评价的内容都会被清除！', function () {
        //     ajaxData.HideEstimate();
        //     myPub.LayerCloseAll();
        // }, function () {
        //     myPub.LayerCloseAll();
        // })
    });

    // 评价星星设置
    oEstimateStars.each(function (i) {

        // 初始化星星状态和文字信息
        oEstimateStars.eq(i).find('li').addClass('active');

        //添加点击事件
        oEstimateStars.eq(i).find('li').hammer().on('tap',function() {
            var index = $(this).index();
            var pIndex = oEstimateStars.index($(this).parents('.js_estimateStars'));
            var _this = $(this);

            if (_this.hasClass('active')) {
                _this.removeClass('active');
                oStarsText.html(starsText[index-1]);
                for (var n = maxNum; n > index; n--) {
                    oEstimateStars.eq(pIndex).find('li').eq(n).removeClass('active');
                }
                if (index == 0) {
                    oEstimateStars.eq(pIndex).find('li').eq(index).addClass('active');
                    oStarsText.html(starsText[0]);
                }
            }
            else {
                _this.addClass('active');
                if (index > 0) {
                    for (var i = 0; i < index; i++) {
                        oEstimateStars.eq(pIndex).find('li').eq(i).addClass('active')
                    }
                }
                oStarsText.html(starsText[index]);
            }


            //星星评价的等级显示
            oPraiseItem.hide().removeClass('isActive');         //初始化按钮均未选中
            var oPraiseBtn = oPraiseItem.find('button');
            switch (index) {                                    //选中按钮
                case 0:
                    oPraiseItem.eq(0).show().addClass('isActive');
                    oPraiseBtn.removeClass('btnActive');
                    break;
                case 1:
                    oPraiseItem.eq(0).show().addClass('isActive');
                    oPraiseBtn.removeClass('btnActive');
                    break;
                case 2:
                    if(_this.hasClass('active')){
                        oPraiseItem.eq(1).show().addClass('isActive');
                    }else{
                        oPraiseItem.eq(0).show().addClass('isActive');
                    }
                    break;
                case 3:
                    oPraiseBtn.removeClass('btnActive');
                    if(_this.hasClass('active')){
                        oPraiseItem.eq(2).show().addClass('isActive');
                    }else{
                        oPraiseItem.eq(1).show().addClass('isActive');
                    }
                    break;
                case 4:
                    oPraiseBtn.removeClass('btnActive');
                    oPraiseItem.eq(2).show().addClass('isActive');
            }
        })
    });

    //设置点击样式切换
    oPraiseItem.on('click', 'button', function() {
        $(this).parent().siblings().children().removeClass('btnActive');       //其他等级按钮初始化
        if( $(this).hasClass('btnActive') ){
            $(this).removeClass('btnActive')
        }
        else{
            $(this).addClass('btnActive');
        }
    });

    var selectBtn = null;           //设置评价等级

    // 提交
    oSubmitBtn.hammer().on('tap', function () {
        if(btnOff) {
            var starsMessages = [];             //选中按钮值的集合
            btnOff = false;

            oPraiseItem.each(function (i) {     //判断当前评价等级
                if( oPraiseItem.eq(i).hasClass('isActive') ) {
                    selectBtn = oPraiseItem[i];
                }
            });

            if (selectBtn) {                   //选中的按钮值
                $(selectBtn).find('button').each(function (i) {
                    var _btn = $(selectBtn).find('button').eq(i);
                    if ( _btn.hasClass('btnActive') ) {
                        starsMessages.push( _btn.attr('value') );
                    }
                });
                    starsMessages = starsMessages.toString();
            }
            postData.star = oEstimateStars.find("li.active").length;
                postData.afterSaleComments = starsMessages;
                postData.supplierId = ajaxData.supplierId;
                postData.workOrderId = ajaxData.workOrderId;

                //console.log(postData);
                ajaxData.submitForm(postData, function() {
                    btnOff = true;
                });

            // if( starsMessages.length == 0 ) {
            //     myPub.TipLayer("请选择服务评价!", layerStyle, function () {
            //         // myPub.LayerCloseAll();
            //         btnOff = true;
            //     });
            // }
            // else {                          //提交按钮值
            //     postData.star = oEstimateStars.find("li.active").length;
            //     postData.afterSaleComments = starsMessages;
            //     postData.supplierId = ajaxData.supplierId;
            //     postData.workOrderId = ajaxData.workOrderId;
            //
            //     //console.log(postData);
            //     ajaxData.submitForm(postData, function() {
            //         btnOff = true;
            //     });
            // }
        }
    });


    // 回到顶部
    oSideBox.hammer().on('tap', function () {

        oWrap.scrollTop(0);
    });

    oLayerMessage.on('blur', function () {
        window.scrollTo(0,document.documentElement.clientHeight);
    })


});